#include <stdio.h>

void fun1()
{
    int array1[10];
    int sum = 0;
    for (int i = 0; i < 10; i++)
    {
        printf("请输入一个整数：");
        scanf("%d", &array1[i]);
        sum += array1[i];
    }
    printf("您输入的数字总和是：%d", sum);
}
void fun2()
{
    int array[10];
    int sum = 0;
    for (int i = 0; i < 10; i++)
    {
        printf("请输入一个整数：");
        scanf("%d", &array[i]);
    }

    for (int i = 0; i < sizeof(array) / sizeof(int); i++)
    {
        if (array[i] % 2 == 0)
        {
            printf("%d：是整数", array[i]);
            sum += array[i];
        }
    }
    printf("所有输入整数的和是：%d", sum);
}
void fun4()
{
    int array[10];
    int minNum; //存储最小值
    int maxNum; //存储最大值
    // 获取用户输入的值
    for (int i = 0; i < 10; i++)
    {
        printf("请输入一个整数：");
        scanf("%d", &array[i]);
        if (i == 0)
        {
            minNum = array[i];
            maxNum = array[i];
        }
        if (minNum > array[i])
        {
            minNum = array[i];
        }
        if (maxNum < array[i])
        {
            maxNum = array[i];
        }
    }
    printf("----------求公倍数\n");
    // 求最小公倍数
    int number = maxNum;
    while (1)
    {
        int flag = 1;
        for (int i = 0; i < sizeof(array) / sizeof(int); i++)
        {
            if (number % array[i] != 0)
            {
                flag = 0;
                break;
            }
        }
        // 找到了
        if (flag)
        {
            printf("最小公倍数是：%d\n", number);
            break;
        }
        number++;
    }

    printf("----------求公因数\n");
    // 求最大公因数
    for (int i = minNum; i > 0; i--)
    {
        int flag = 1;
        for (int j = 0; j < sizeof(array) / sizeof(int); j++)
        {
            if (array[i] % flag != 0)
            {
                flag = 0;
                break;
            }
        }
        if (flag)
        {
            printf("最大公因数是：%d\n", i);
            break;
        }
    }
}
void fun5()
{
    // 数组后面的 1 位前移
    int array[10];
    for (int i = 0; i < sizeof(array) / sizeof(int); i++)
    {
        printf("请输入一个整数：");
        scanf("%d", &array[i]);
    }
    int resArr[10] = {array[9]};
    for (int i = sizeof(array) / sizeof(int) - 1; i > 0; i--)
    {
        resArr[i] = array[i - 1];
    }

    for (int i = 0; i < sizeof(resArr) / sizeof(int); i++)
    {
        printf(" %d ", resArr[i]);
    }
}
void fun6()
{ 
    // 数组后面的n位前移
    int array[10];
    int m; 
    for (int i = 0; i < sizeof(array) / sizeof(int); i++)
    {
        printf("请输入一个整数：");
        scanf("%d", &array[i]);
    }
    printf("请您要前移的位数：");
    scanf("%d", &m);

    int tempArr[10];
    for (int i = 0; i < m; i++)
    {
        tempArr[i] = array[10-m+i]; // 将后 m 位存储
    }
    
    for (int i = 10-1; i-m >=0; i--)
    {
        // i 是最后一位，依次从最后一位往前存储 减 m 位的数
        /*
                前：
            值：  3 4 5 6 7 8
            索引：0 1 2 3 4 5
                后：
            值：  3 4 3 4 5 6
            索引：0 1 2 3 4 5
        */ 
        array[i] = array[i-m];
    }

    for (int i = 0; i < m; i++)
    {
        array[i] = tempArr[i]; // 将后 m 位存储
    }
     
    // 输出结果
    for (int i = 0; i < sizeof(array) / sizeof(int); i++)
    {
        printf(" %d ", array[i]);
    }
}
int main()
{
    fun5();
    return 0;
}